package com.ktgj.flight.service;

import java.util.List;
import java.util.Map;

import com.ktgj.flight.domain.FlightOrderInfoTicketNo;
import com.ktgj.flight.domain.FlightOrderInfoTickets;
import org.apache.ibatis.annotations.Param;

/**
 * 机票预订_机票订单机票明细Service接口
 * 
 * @author ruoyi
 * @date 2021-10-26
 */
public interface IFlightOrderInfoTicketsService 
{
    /**
     * 查询机票预订_机票订单机票明细
     * 
     * @param orderInfoTicketsId 机票预订_机票订单机票明细ID
     * @return 机票预订_机票订单机票明细
     */
    public FlightOrderInfoTickets selectFlightOrderInfoTicketsById(Long orderInfoTicketsId);

    /**
     * 查询机票预订_机票订单机票明细列表
     * 
     * @param flightOrderInfoTickets 机票预订_机票订单机票明细
     * @return 机票预订_机票订单机票明细集合
     */
    public List<FlightOrderInfoTickets> selectFlightOrderInfoTicketsList(FlightOrderInfoTickets flightOrderInfoTickets);

    /**
     * 查询机票预订_机票订单机票明细
     *
     * @param orderId 机票预订_机票订单机票明细ID
     * @return 机票预订_机票订单机票明细
     */
    public List<FlightOrderInfoTickets> selectFlightOrderInfoTicketsByOrderId(Long orderId);

    /**
     * 新增机票预订_机票订单机票明细
     * 
     * @param flightOrderInfoTickets 机票预订_机票订单机票明细
     * @return 结果
     */
    public int insertFlightOrderInfoTickets(FlightOrderInfoTickets flightOrderInfoTickets);

    /**
     * 修改机票预订_机票订单机票明细
     * 
     * @param flightOrderInfoTickets 机票预订_机票订单机票明细
     * @return 结果
     */
    public int updateFlightOrderInfoTickets(FlightOrderInfoTickets flightOrderInfoTickets);

    /**
     * 修改票号
     *
     * @return 结果
     */
    public int updateFlightOrderInfoTicketsByTicketNo(FlightOrderInfoTicketNo ticketNo);

    /**
     * 批量删除机票预订_机票订单机票明细
     * 
     * @param orderInfoTicketsIds 需要删除的机票预订_机票订单机票明细ID
     * @return 结果
     */
    public int deleteFlightOrderInfoTicketsByIds(Long[] orderInfoTicketsIds);

    /**
     * 删除机票预订_机票订单机票明细信息
     * 
     * @param orderInfoTicketsId 机票预订_机票订单机票明细ID
     * @return 结果
     */
    public int deleteFlightOrderInfoTicketsById(Long orderInfoTicketsId);

    /**
     * 查看行程用
     * @param orderID
     * @return
     */
    public Map<String, Object> queryFlightOrderTrip(Long orderID);

    /**
     * 根据订单ID获取订单详细信息
     * @param orderId
     * @return
     */
    List<FlightOrderInfoTickets> selectOrderInfoTicketByOrderId(Long orderId);

    /**
     * 根据票号获取订单详细信息
     * @param ticketNo
     * @return
     */
    FlightOrderInfoTickets getFlightOrderInfoByTicketNo(String ticketNo);

    public List<FlightOrderInfoTickets> getFlightOrderInfoByTicketNoList(String ticketNo);

    /**
     * 定制行程-单程
     * @param customerId
     * @return
     */
    public Map<String, Object> queryInfoTickets(Long customerId);

    /**
     * 改期 TODO
     * @param orderId
     * @return
     */
    public List<FlightOrderInfoTickets> selectRescheduled(Long orderId);

    /**
     * 根据票号与订单号修改机票预订_机票订单机票明细
     *
     * @param flightOrderInfoTickets 机票预订_机票订单机票明细
     * @return 结果
     */
    public int updateFlightOrderInfoTicket(FlightOrderInfoTickets flightOrderInfoTickets);

    /**
     * 根据主订单号修改状态
     * @param orderId
     * @param status
     * @return
     */
    public int updateFlightOrderInfoTicketsByOrderId(Long orderId, String status);

    /**
     * 机票分析
     * @param customerId
     * @param startDate
     * @param endDate
     * @return
     */
    public List<FlightOrderInfoTickets> flightAnalysis(Long customerId, String startDate, String endDate);

    /**
     * 回填票号
     * */
    public int backfillTicketNumber(Long id, String ticketNumber);

    /**
     * 订单号获取乘客id列表
     * */
    public List<Long> flightOrderIdList(Long orderId);

    /**
     * 机票订单详细（远程）
     * */
    public boolean order(String ticketNum);
}
